package net.jlibrary.invoice.action.vo;

import java.io.Serializable;
import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;

import net.jlibrary.common.CoreConstants;
import net.jlibrary.common.core.annotation.VoForPo;
import net.jlibrary.common.core.entity.BaseVo;
import net.jlibrary.common.project.domain.Group;
import net.jlibrary.curbparking.domain.ParkRecord;
import net.jlibrary.curbparking.domain.PlateNumber;
import net.jlibrary.group.domain.ParkingPlace;
import net.jlibrary.invoice.domain.ElectronicInvoice;
import net.jlibrary.invoice.domain.ElectronicInvoiceGfInfo;
import net.jlibrary.invoice.domain.ElectronicInvoiceKpInfo;
import net.jlibrary.invoice.domain.InvoiceStatus;
import net.jlibrary.invoice.domain.InvoiceType;

@VoForPo(ElectronicInvoiceKpInfo.class)
public class ElectronicInvoiceKpActionVo extends BaseVo {
	private static final long serialVersionUID = -6489938604216201964L;
	private Long id;
	private ParkRecordVo record;// 订单
	private ElectronicInvoiceVo eiSetting;// 销方信息
	private ElectronicInvoiceGfInfoVo gfInfo;// 购方信息
	private Long zsid;// 中税发票Id
	private String fpdm;// 发票代码
	private String fphm;// 发票号码
	private String yfpdm;// 原发票代码 红冲后的发票不为空
	private String yfphm;// 原发票号码 红冲后的发票不为空
	private String skm;// 税控码
	@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
	@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
	private Date kprq;// 开票日期
	private String jym;// 校验码
	private String ewm;// 二维码
	private String pdfUrl;// 电子发票pdf格式
	private String url;// 电子发票ofd格式文件
	private String kpzdbs;// 开票税控号
	private String fpqqlsh;// 请求税局的发票请求流水号
	private InvoiceTypeVo invoiceType;// 增值税电子发票026 增值税专用发票004 增值税普通发票007 增值税电子专用发票028
	private String bz;// 备注
	private String negativeSkm;// 负数发票的税控码
	private String negativeJym;// 负数发票的校验码
	@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
	@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
	private Date negativeKprq;// 作废日期
	private String errorMsg;// 失败原因
	private InvoiceStatusVo status;// 状态状态 1待填写抬头 2开票完成 20开票中 22开票失败

	@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
	@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
	private Date createdate;

	@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
	@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
	private Date lastdate;

	public String getNegativeSkm() {
		return negativeSkm;
	}

	public void setNegativeSkm(String negativeSkm) {
		this.negativeSkm = negativeSkm;
	}

	public String getNegativeJym() {
		return negativeJym;
	}

	public void setNegativeJym(String negativeJym) {
		this.negativeJym = negativeJym;
	}

	public Date getNegativeKprq() {
		return negativeKprq;
	}

	public void setNegativeKprq(Date negativeKprq) {
		this.negativeKprq = negativeKprq;
	}

	public String getYfpdm() {
		return yfpdm;
	}

	public void setYfpdm(String yfpdm) {
		this.yfpdm = yfpdm;
	}

	public String getYfphm() {
		return yfphm;
	}

	public void setYfphm(String yfphm) {
		this.yfphm = yfphm;
	}

	public ElectronicInvoiceKpActionVo() {
		eiSetting = new ElectronicInvoiceVo();
		gfInfo = new ElectronicInvoiceGfInfoVo();
		invoiceType = new InvoiceTypeVo();
		status = new InvoiceStatusVo();
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public ParkRecordVo getRecord() {
		return record;
	}

	public void setRecord(ParkRecordVo record) {
		this.record = record;
	}

	public ElectronicInvoiceVo getEiSetting() {
		return eiSetting;
	}

	public void setEiSetting(ElectronicInvoiceVo eiSetting) {
		this.eiSetting = eiSetting;
	}

	public ElectronicInvoiceGfInfoVo getGfInfo() {
		return gfInfo;
	}

	public void setGfInfo(ElectronicInvoiceGfInfoVo gfInfo) {
		this.gfInfo = gfInfo;
	}

	public Long getZsid() {
		return zsid;
	}

	public void setZsid(Long zsid) {
		this.zsid = zsid;
	}

	public String getFpdm() {
		return fpdm;
	}

	public void setFpdm(String fpdm) {
		this.fpdm = fpdm;
	}

	public String getFphm() {
		return fphm;
	}

	public void setFphm(String fphm) {
		this.fphm = fphm;
	}

	public String getSkm() {
		return skm;
	}

	public void setSkm(String skm) {
		this.skm = skm;
	}

	public Date getKprq() {
		return kprq;
	}

	public void setKprq(Date kprq) {
		this.kprq = kprq;
	}

	public String getJym() {
		return jym;
	}

	public void setJym(String jym) {
		this.jym = jym;
	}

	public String getPdfUrl() {
		return pdfUrl;
	}

	public void setPdfUrl(String pdfUrl) {
		this.pdfUrl = pdfUrl;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getKpzdbs() {
		return kpzdbs;
	}

	public void setKpzdbs(String kpzdbs) {
		this.kpzdbs = kpzdbs;
	}

	public String getFpqqlsh() {
		return fpqqlsh;
	}

	public void setFpqqlsh(String fpqqlsh) {
		this.fpqqlsh = fpqqlsh;
	}

	public InvoiceTypeVo getInvoiceType() {
		return invoiceType;
	}

	public void setInvoiceType(InvoiceTypeVo invoiceType) {
		this.invoiceType = invoiceType;
	}

	public String getBz() {
		return bz;
	}

	public void setBz(String bz) {
		this.bz = bz;
	}

	public Date getCreatedate() {
		return createdate;
	}

	public void setCreatedate(Date createdate) {
		this.createdate = createdate;
	}

	public Date getLastdate() {
		return lastdate;
	}

	public void setLastdate(Date lastdate) {
		this.lastdate = lastdate;
	}

	public InvoiceStatusVo getStatus() {
		return status;
	}

	public void setStatus(InvoiceStatusVo status) {
		this.status = status;
	}

	public String getErrorMsg() {
		return errorMsg;
	}

	public void setErrorMsg(String errorMsg) {
		this.errorMsg = errorMsg;
	}

	@VoForPo(InvoiceType.class)
	public class InvoiceTypeVo extends BaseVo {
		private static final long serialVersionUID = -1616200913601477125L;
		private Long id;
		private String name;
		private String code;
		private String description;
		private int taxis;
		private boolean valid;
		private boolean allowQueryInvalid;
		private boolean compellingDelete;
		private String parentIsNull;
		private String validString;
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date createdate;
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date lastdate;

		public Long getId() {
			return id;
		}

		@Override
		public Serializable getPrimaryKey() {
			return id;
		}

		@Override
		public Serializable getText() {
			return name;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public String getCode() {
			return code;
		}

		public void setCode(String code) {
			this.code = code;
		}

		public String getDescription() {
			return description;
		}

		public void setDescription(String description) {
			this.description = description;
		}

		public int getTaxis() {
			return taxis;
		}

		public void setTaxis(int taxis) {
			this.taxis = taxis;
		}

		public boolean getValid() {
			return valid;
		}

		public void setValid(boolean valid) {
			this.valid = valid;
		}

		public boolean getAllowQueryInvalid() {
			return allowQueryInvalid;
		}

		public void setAllowQueryInvalid(boolean allowQueryInvalid) {
			this.allowQueryInvalid = allowQueryInvalid;
		}

		public boolean getCompellingDelete() {
			return compellingDelete;
		}

		public void setCompellingDelete(boolean compellingDelete) {
			this.compellingDelete = compellingDelete;
		}

		public String getParentIsNull() {
			return parentIsNull;
		}

		public void setParentIsNull(String parentIsNull) {
			this.parentIsNull = parentIsNull;
		}

		public String getValidString() {
			return validString;
		}

		public void setValidString(String validString) {
			this.validString = validString;
		}

		public Date getCreatedate() {
			return createdate;
		}

		public void setCreatedate(Date createdate) {
			this.createdate = createdate;
		}

		public Date getLastdate() {
			return lastdate;
		}

		public void setLastdate(Date lastdate) {
			this.lastdate = lastdate;
		}
	}

	@VoForPo(InvoiceStatus.class)
	public class InvoiceStatusVo extends BaseVo {
		private static final long serialVersionUID = -1616200913601477125L;
		private Long id;
		private String name;
		private String code;
		private String description;
		private int taxis;
		private boolean valid;
		private boolean allowQueryInvalid;
		private boolean compellingDelete;
		private String parentIsNull;
		private String validString;
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date createdate;
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date lastdate;

		public Long getId() {
			return id;
		}

		@Override
		public Serializable getPrimaryKey() {
			return id;
		}

		@Override
		public Serializable getText() {
			return name;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public String getCode() {
			return code;
		}

		public void setCode(String code) {
			this.code = code;
		}

		public String getDescription() {
			return description;
		}

		public void setDescription(String description) {
			this.description = description;
		}

		public int getTaxis() {
			return taxis;
		}

		public void setTaxis(int taxis) {
			this.taxis = taxis;
		}

		public boolean getValid() {
			return valid;
		}

		public void setValid(boolean valid) {
			this.valid = valid;
		}

		public boolean getAllowQueryInvalid() {
			return allowQueryInvalid;
		}

		public void setAllowQueryInvalid(boolean allowQueryInvalid) {
			this.allowQueryInvalid = allowQueryInvalid;
		}

		public boolean getCompellingDelete() {
			return compellingDelete;
		}

		public void setCompellingDelete(boolean compellingDelete) {
			this.compellingDelete = compellingDelete;
		}

		public String getParentIsNull() {
			return parentIsNull;
		}

		public void setParentIsNull(String parentIsNull) {
			this.parentIsNull = parentIsNull;
		}

		public String getValidString() {
			return validString;
		}

		public void setValidString(String validString) {
			this.validString = validString;
		}

		public Date getCreatedate() {
			return createdate;
		}

		public void setCreatedate(Date createdate) {
			this.createdate = createdate;
		}

		public Date getLastdate() {
			return lastdate;
		}

		public void setLastdate(Date lastdate) {
			this.lastdate = lastdate;
		}
	}

	@VoForPo(ElectronicInvoice.class)
	public class ElectronicInvoiceVo extends BaseVo {
		private static final long serialVersionUID = -3453250229544981371L;
		private Long id;
		private GroupVo group;// 开票企业
		private String bankName;// 开户行名称
		private String bankAccount;// 开户行账号
		private String nsrsbh;// 纳税人识别号
		private String address;// 公司详细地址
		private String phone;// 联系电话
		private String biller;// 开票人
		private String payee;// 收款人
		private String reviewer;// 复核人
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date createdate;
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date lastdate;

		public GroupVo getGroup() {
			return group;
		}

		public void setGroup(GroupVo group) {
			this.group = group;
		}

		public String getBankName() {
			return bankName;
		}

		public void setBankName(String bankName) {
			this.bankName = bankName;
		}

		public String getBankAccount() {
			return bankAccount;
		}

		public void setBankAccount(String bankAccount) {
			this.bankAccount = bankAccount;
		}

		public String getNsrsbh() {
			return nsrsbh;
		}

		public void setNsrsbh(String nsrsbh) {
			this.nsrsbh = nsrsbh;
		}

		public String getAddress() {
			return address;
		}

		public void setAddress(String address) {
			this.address = address;
		}

		public String getPhone() {
			return phone;
		}

		public void setPhone(String phone) {
			this.phone = phone;
		}

		public String getBiller() {
			return biller;
		}

		public void setBiller(String biller) {
			this.biller = biller;
		}

		public String getPayee() {
			return payee;
		}

		public void setPayee(String payee) {
			this.payee = payee;
		}

		public String getReviewer() {
			return reviewer;
		}

		public void setReviewer(String reviewer) {
			this.reviewer = reviewer;
		}

		public Date getCreatedate() {
			return createdate;
		}

		public void setCreatedate(Date createdate) {
			this.createdate = createdate;
		}

		public Date getLastdate() {
			return lastdate;
		}

		public void setLastdate(Date lastdate) {
			this.lastdate = lastdate;
		}

		@VoForPo(Group.class)
		public class GroupVo extends BaseVo {
			private static final long serialVersionUID = -5267248468320026373L;
			private Long id;
			private String code;
			private String globalPath;
			private String fullName;
			private String shortName;
			private boolean valid;
			private boolean allowQueryInvalid;
			private boolean compellingDelete;
			private String loginMode;
			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date createdate;
			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date lastdate;

			public Long getId() {
				return id;
			}

			@Override
			public Serializable getPrimaryKey() {
				return id;
			}

			@Override
			public Serializable getText() {
				return shortName;
			}

			public void setId(Long id) {
				this.id = id;
			}

			public String getCode() {
				return code;
			}

			public void setCode(String code) {
				this.code = code;
			}

			public String getGlobalPath() {
				return globalPath;
			}

			public void setGlobalPath(String globalPath) {
				this.globalPath = globalPath;
			}

			public String getFullName() {
				return fullName;
			}

			public void setFullName(String fullName) {
				this.fullName = fullName;
			}

			public String getShortName() {
				return shortName;
			}

			public void setShortName(String shortName) {
				this.shortName = shortName;
			}

			public boolean getValid() {
				return valid;
			}

			public void setValid(boolean valid) {
				this.valid = valid;
			}

			public boolean getAllowQueryInvalid() {
				return allowQueryInvalid;
			}

			public void setAllowQueryInvalid(boolean allowQueryInvalid) {
				this.allowQueryInvalid = allowQueryInvalid;
			}

			public boolean getCompellingDelete() {
				return compellingDelete;
			}

			public void setCompellingDelete(boolean compellingDelete) {
				this.compellingDelete = compellingDelete;
			}

			public String getLoginMode() {
				return loginMode;
			}

			public void setLoginMode(String loginMode) {
				this.loginMode = loginMode;
			}

			public Date getCreatedate() {
				return createdate;
			}

			public void setCreatedate(Date createdate) {
				this.createdate = createdate;
			}

			public Date getLastdate() {
				return lastdate;
			}

			public void setLastdate(Date lastdate) {
				this.lastdate = lastdate;
			}
		}

		@Override
		public Serializable getPrimaryKey() {
			// TODO Auto-generated method stub
			return id;
		}

		@Override
		public Serializable getText() {
			// TODO Auto-generated method stub
			return group.getText();
		}

		public Long getId() {
			return id;
		}

		public void setId(Long id) {
			this.id = id;
		}

	}

	@VoForPo(ElectronicInvoiceGfInfo.class)
	public class ElectronicInvoiceGfInfoVo extends BaseVo {
		private static final long serialVersionUID = -7201010404058565662L;
		private Long id;
		private String ghdwmc;
		private String ghdwsbh;
		private String ghdwdz;
		private String ghdwdh;
		private String ghdwyhmc;
		private String ghdwyh;
		private String gfkhyx;
		private PlateNumberVo plateNumber;// 车牌
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date createdate;
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date lastdate;

		public ElectronicInvoiceGfInfoVo() {
			plateNumber = new PlateNumberVo();
		}

		public Long getId() {
			return id;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getGhdwmc() {
			return ghdwmc;
		}

		public void setGhdwmc(String ghdwmc) {
			this.ghdwmc = ghdwmc;
		}

		public String getGhdwsbh() {
			return ghdwsbh;
		}

		public void setGhdwsbh(String ghdwsbh) {
			this.ghdwsbh = ghdwsbh;
		}

		public String getGhdwdz() {
			return ghdwdz;
		}

		public void setGhdwdz(String ghdwdz) {
			this.ghdwdz = ghdwdz;
		}

		public String getGhdwdh() {
			return ghdwdh;
		}

		public void setGhdwdh(String ghdwdh) {
			this.ghdwdh = ghdwdh;
		}

		public String getGhdwyhmc() {
			return ghdwyhmc;
		}

		public void setGhdwyhmc(String ghdwyhmc) {
			this.ghdwyhmc = ghdwyhmc;
		}

		public String getGhdwyh() {
			return ghdwyh;
		}

		public void setGhdwyh(String ghdwyh) {
			this.ghdwyh = ghdwyh;
		}

		public String getGfkhyx() {
			return gfkhyx;
		}

		public void setGfkhyx(String gfkhyx) {
			this.gfkhyx = gfkhyx;
		}

		public PlateNumberVo getPlateNumber() {
			return plateNumber;
		}

		public void setPlateNumber(PlateNumberVo plateNumber) {
			this.plateNumber = plateNumber;
		}

		public Date getCreatedate() {
			return createdate;
		}

		public void setCreatedate(Date createdate) {
			this.createdate = createdate;
		}

		public Date getLastdate() {
			return lastdate;
		}

		public void setLastdate(Date lastdate) {
			this.lastdate = lastdate;
		}

		@VoForPo(PlateNumber.class)
		public class PlateNumberVo extends BaseVo {
			private static final long serialVersionUID = -1033985713586781506L;
			private Long id;
			private String plateNumber;// 车牌

			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date createdate;
			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date lastdate;

			public Long getId() {
				return id;
			}

			public void setId(Long id) {
				this.id = id;
			}

			public String getPlateNumber() {
				return plateNumber;
			}

			public void setPlateNumber(String plateNumber) {
				this.plateNumber = plateNumber;
			}

			public Date getCreatedate() {
				return createdate;
			}

			public void setCreatedate(Date createdate) {
				this.createdate = createdate;
			}

			public Date getLastdate() {
				return lastdate;
			}

			public void setLastdate(Date lastdate) {
				this.lastdate = lastdate;
			}

			@Override
			public Serializable getPrimaryKey() {
				// TODO Auto-generated method stub
				return id;
			}

			@Override
			public Serializable getText() {
				// TODO Auto-generated method stub
				return plateNumber;
			}

			@Override
			public String toString() {
				return "PlateNumberVo [id=" + id + ", plateNumber=" + plateNumber + ", createdate=" + createdate
						+ ", lastdate=" + lastdate + "]";
			}

		}

		@Override
		public Serializable getPrimaryKey() {
			// TODO Auto-generated method stub
			return id;
		}

		@Override
		public Serializable getText() {
			// TODO Auto-generated method stub
			return ghdwmc;
		}

		@Override
		public String toString() {
			return "ElectronicInvoiceGfInfoVo [id=" + id + ", ghdwmc=" + ghdwmc + ", ghdwsbh=" + ghdwsbh + ", ghdwdz="
					+ ghdwdz + ", ghdwdh=" + ghdwdh + ", ghdwyhmc=" + ghdwyhmc + ", ghdwyh=" + ghdwyh + ", gfkhyx="
					+ gfkhyx + ", plateNumber=" + plateNumber + ", createdate=" + createdate + ", lastdate=" + lastdate
					+ "]";
		}

	}

	@VoForPo(ParkRecord.class)
	public class ParkRecordVo extends BaseVo {
		private static final long serialVersionUID = -3453250229544981371L;
		private Long id;
		private String serialNumber;// 流水号
		private String recordId;// 第三方记录编号
		private PlateNumberVo plateNumber;// 车牌
		private ParkingPlaceVo parkingPlace;// 所在停车区
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date ingressTime; // 驶入时间
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date leaveTime; // 驶出时间

		private double receivable;// 应收费用
		private double deratePrice;// 减免费用
		private double money;// 实收费用
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date derateTime;// 减免时间
		private boolean push;// 是否已推送
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date createdate;
		@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
		@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
		private Date lastdate;

		public ParkRecordVo() {
			parkingPlace = new ParkingPlaceVo();
			plateNumber = new PlateNumberVo();
		}

		@VoForPo(ParkingPlace.class)
		public class ParkingPlaceVo extends BaseVo {
			private static final long serialVersionUID = -9051354145997328794L;
			private Long id;
			private String address;
			private double longitude;
			private double latitude;
			private int totalFixedspaces;
			private String platePrefix;
			private String code;
			private String fullName;
			private String shortName;
			private boolean valid;
			private String loginMode;
			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date createdate;
			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date lastdate;

			public Long getId() {
				return id;
			}

			public void setId(Long id) {
				this.id = id;
			}

			public String getAddress() {
				return address;
			}

			public void setAddress(String address) {
				this.address = address;
			}

			public double getLongitude() {
				return longitude;
			}

			public void setLongitude(double longitude) {
				this.longitude = longitude;
			}

			public double getLatitude() {
				return latitude;
			}

			public void setLatitude(double latitude) {
				this.latitude = latitude;
			}

			public int getTotalFixedspaces() {
				return totalFixedspaces;
			}

			public void setTotalFixedspaces(int totalFixedspaces) {
				this.totalFixedspaces = totalFixedspaces;
			}

			public String getPlatePrefix() {
				return platePrefix;
			}

			public void setPlatePrefix(String platePrefix) {
				this.platePrefix = platePrefix;
			}

			public String getCode() {
				return code;
			}

			public void setCode(String code) {
				this.code = code;
			}

			public String getFullName() {
				return fullName;
			}

			public void setFullName(String fullName) {
				this.fullName = fullName;
			}

			public String getShortName() {
				return shortName;
			}

			public void setShortName(String shortName) {
				this.shortName = shortName;
			}

			public boolean isValid() {
				return valid;
			}

			public void setValid(boolean valid) {
				this.valid = valid;
			}

			public String getLoginMode() {
				return loginMode;
			}

			public void setLoginMode(String loginMode) {
				this.loginMode = loginMode;
			}

			@Override
			public Serializable getPrimaryKey() {
				// TODO Auto-generated method stub
				return id;
			}

			@Override
			public Serializable getText() {
				// TODO Auto-generated method stub
				return fullName;
			}

			public Date getCreatedate() {
				return createdate;
			}

			public void setCreatedate(Date createdate) {
				this.createdate = createdate;
			}

			public Date getLastdate() {
				return lastdate;
			}

			public void setLastdate(Date lastdate) {
				this.lastdate = lastdate;
			}

		}

		public Long getId() {
			return id;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getSerialNumber() {
			return serialNumber;
		}

		public void setSerialNumber(String serialNumber) {
			this.serialNumber = serialNumber;
		}

		public String getRecordId() {
			return recordId;
		}

		public void setRecordId(String recordId) {
			this.recordId = recordId;
		}

		public PlateNumberVo getPlateNumber() {
			return plateNumber;
		}

		public void setPlateNumber(PlateNumberVo plateNumber) {
			this.plateNumber = plateNumber;
		}

		public ParkingPlaceVo getParkingPlace() {
			return parkingPlace;
		}

		public void setParkingPlace(ParkingPlaceVo parkingPlace) {
			this.parkingPlace = parkingPlace;
		}

		public Date getIngressTime() {
			return ingressTime;
		}

		public void setIngressTime(Date ingressTime) {
			this.ingressTime = ingressTime;
		}

		public Date getLeaveTime() {
			return leaveTime;
		}

		public void setLeaveTime(Date leaveTime) {
			this.leaveTime = leaveTime;
		}

		public double getReceivable() {
			return receivable;
		}

		public void setReceivable(double receivable) {
			this.receivable = receivable;
		}

		public double getDeratePrice() {
			return deratePrice;
		}

		public void setDeratePrice(double deratePrice) {
			this.deratePrice = deratePrice;
		}

		public double getMoney() {
			return money;
		}

		public void setMoney(double money) {
			this.money = money;
		}

		public Date getDerateTime() {
			return derateTime;
		}

		public void setDerateTime(Date derateTime) {
			this.derateTime = derateTime;
		}

		public boolean isPush() {
			return push;
		}

		public void setPush(boolean push) {
			this.push = push;
		}

		public Date getCreatedate() {
			return createdate;
		}

		public void setCreatedate(Date createdate) {
			this.createdate = createdate;
		}

		public Date getLastdate() {
			return lastdate;
		}

		public void setLastdate(Date lastdate) {
			this.lastdate = lastdate;
		}

		@VoForPo(PlateNumber.class)
		public class PlateNumberVo extends BaseVo {
			private static final long serialVersionUID = -1033985713586781506L;
			private Long id;
			private String plateNumber;// 车牌
			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date createdate;
			@DateTimeFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT)
			@JsonFormat(pattern = CoreConstants.DATETIME_FORMAT_DEFAULT, timezone = CoreConstants.DATE_TIMEZONE_DEFAULT)
			private Date lastdate;

			public Long getId() {
				return id;
			}

			public void setId(Long id) {
				this.id = id;
			}

			public String getPlateNumber() {
				return plateNumber;
			}

			public void setPlateNumber(String plateNumber) {
				this.plateNumber = plateNumber;
			}

			public Date getCreatedate() {
				return createdate;
			}

			public void setCreatedate(Date createdate) {
				this.createdate = createdate;
			}

			public Date getLastdate() {
				return lastdate;
			}

			public void setLastdate(Date lastdate) {
				this.lastdate = lastdate;
			}

			@Override
			public Serializable getPrimaryKey() {
				// TODO Auto-generated method stub
				return id;
			}

			@Override
			public Serializable getText() {
				// TODO Auto-generated method stub
				return plateNumber;
			}
		}

		@Override
		public Serializable getPrimaryKey() {
			// TODO Auto-generated method stub
			return id;
		}

		@Override
		public Serializable getText() {
			// TODO Auto-generated method stub
			return plateNumber.getText();
		}
	}

	@Override
	public Serializable getPrimaryKey() {
		// TODO Auto-generated method stub
		return id;
	}

	@Override
	public Serializable getText() {
		// TODO Auto-generated method stub
		return bz;
	}

	public String getEwm() {
		return ewm;
	}

	public void setEwm(String ewm) {
		this.ewm = ewm;
	}

}
